Optional Class Example: NullPointerException প্রতিরোধে Optional Class ব্যবহার

Java Advanced Topics Examples - জাভা উদাহরন (Java  Examples) - Java Technologies

364

NullPointerException

Optional ক্লাসটি Java 8 এ পরিচিতি পায় এবং এটি মূলত null চেকিং সমস্যা সমাধানের জন্য ডিজাইন করা হয়েছে। এটি একটি wrapper ক্লাস যা null না থাকা মানের জন্য একটি অবজেক্ট ধারণ করতে পারে এবং null মানের জন্য একটি নিরাপদ বিকল্প প্রদান করে। এর মাধ্যমে NullPointerException প্রতিরোধ করা সম্ভব হয়।

Optional Class: Key Features

  • Optional একটি container অবজেক্ট যা মূলত null বা non-null মান ধারণ করতে পারে।
  • Optional ব্যবহার করে আমরা null চেক করা এবং NullPointerException থেকে বাঁচা সহজ করে ফেলি।

Optional Class Example:

এখানে একটি উদাহরণ দেওয়া হলো, যেখানে Optional ব্যবহার করা হয়েছে null চেকিং এবং NullPointerException প্রতিরোধের জন্য।

১. ক্লাস এবং মেথড তৈরি:

import java.util.Optional;

public class OptionalExample {

    public static void main(String[] args) {
        // উদাহরণ 1: null চেক করার জন্য Optional ব্যবহার
        String name = "John Doe";
        Optional<String> optionalName = Optional.ofNullable(name);

        // Optional এর মাধ্যমে null চেক করা
        optionalName.ifPresent(n -> System.out.println("নাম: " + n));
        
        // উদাহরণ 2: null চেক না করে মান নেওয়া
        String result = optionalName.orElse("নাম পাওয়া যায়নি");
        System.out.println("ফলাফল: " + result);
        
        // উদাহরণ 3: Optional এর মাধ্যমে null চেক এবং ডিফল্ট মান নির্ধারণ করা
        String nullName = null;
        Optional<String> optionalNullName = Optional.ofNullable(nullName);
        
        // Optional থেকে null থাকলে ডিফল্ট মান দেওয়া
        String result2 = optionalNullName.orElse("নাম পাওয়া যায়নি");
        System.out.println("ফলাফল: " + result2);

        // উদাহরণ 4: Optional এর মাধ্যমে Exeption handling করা
        String nameFromOptional = optionalNullName.orElseThrow(() -> new IllegalArgumentException("নাম অনুপস্থিত"));
        System.out.println("নাম: " + nameFromOptional);  // এটি এক্সসেপশন ছুঁড়ে দিবে
    }
}

Code Explanation:

  1. Optional.ofNullable(): এই মেথডটি একটি Optional অবজেক্ট তৈরি করে যা একটি null বা non-null ভ্যালু ধারণ করতে পারে।
  2. ifPresent(): যদি মানটি non-null হয়, তবে এটি ifPresent মেথডের ল্যাম্বডা এক্সপ্রেশন (অথবা কোড ব্লক) রান করবে।
  3. orElse(): এটি Optional অবজেক্টের মধ্যে একটি মান থাকলে তা রিটার্ন করবে, এবং যদি মানটি null হয়, তবে একটি ডিফল্ট মান প্রদান করবে।
  4. orElseThrow(): এটি Optional অবজেক্টের মধ্যে null থাকলে একটি কাস্টম এক্সসেপশন ছুঁড়ে দেবে।

Output:

নাম: John Doe
ফলাফল: John Doe
ফলাফল: নাম পাওয়া যায়নি
Exception in thread "main" java.lang.IllegalArgumentException: নাম অনুপস্থিত
    at OptionalExample.main(OptionalExample.java:22)

Optional ক্লাসের আরও কিছু সাধারণ ব্যবহার:

২. isPresent() এবং get() মেথড ব্যবহার:

Optional<String> optional = Optional.of("Java");

if (optional.isPresent()) {
    System.out.println("মান পাওয়া গেছে: " + optional.get());
} else {
    System.out.println("মান পাওয়া যায়নি");
}

৩. map() এবং flatMap() মেথড ব্যবহার:

map() মেথডটি যদি Optional অবজেক্টে মান থাকে, তবে তা একটি ফাংশন প্রয়োগ করে নতুন Optional তৈরি করবে।

Optional<String> nameOptional = Optional.of("John");

Optional<String> upperName = nameOptional.map(String::toUpperCase);
System.out.println(upperName.get());  // Output: JOHN

Optional Class এর সুবিধা:

  1. NullPointerException থেকে রক্ষা: Optional ব্যবহার করে সহজেই null চেক করা যায় এবং NullPointerException কমানো যায়।
  2. কোডের ক্লিনলিনেস: Optional ব্যবহার করে কোডে null চেক করার জন্য অতিরিক্ত if-else স্টেটমেন্ট কমানো যায়।
  3. কমপ্লেক্স ভ্যালু ট্রান্সফর্মেশন: Optional ব্যবহার করে chainable মেথড (যেমন map(), flatMap()) ব্যবহার করে কমপ্লেক্স অপারেশন করা যায়।

Optional Class এর সীমাবদ্ধতা:

  1. অতিরিক্ত ওভারহেড: যদি খুব সাধারণ প্রোগ্রামে ব্যবহার করা হয়, তবে Optional কিছুটা অতিরিক্ত ওভারহেড তৈরি করতে পারে, বিশেষত যখন সিঙ্গল ভ্যালুর সাথে কাজ করা হয়।
  2. প্রতিটি ক্ষেত্রে ব্যবহার নয়: Optional শুধুমাত্র ঐ ক্ষেত্রে ব্যবহার করা উচিত যেখানে null এর প্রভাব থাকে, যেমন ফাংশনে null ফেরত দেওয়া বা মানের অনুপস্থিতি।

Optional ক্লাস Java 8 এ একটি শক্তিশালী টুল হিসেবে পরিচিত, যা NullPointerException প্রতিরোধ এবং নিরাপদভাবে null চেক করার সুযোগ দেয়। এটি null মান নিয়ে কাজ করার সময় কোডের দক্ষতা এবং পঠনযোগ্যতা বৃদ্ধি করে।

Content added By
Promotion

Are you sure to start over?

Loading...